/**
 * 权限检查工具函数
 * 用于在组件中检查当前用户是否有特定操作的权限
 */

import { useUserStore } from '@/store/index.js'

/**
 * 检查当前模块是否只读
 * @param {string} moduleName - 模块名称 ('dashboard', 'goods', 'order', 'permission')
 * @returns {boolean} 是否为只读模式
 */
export function isModuleReadonly(moduleName) {
    const userStore = useUserStore()
    const menus = userStore.getVisibleMenus
    return menus[moduleName]?.readonly || false
}

/**
 * 检查子菜单是否只读
 * @param {string} moduleName - 模块名称 ('goods', 'order', 'permission')
 * @param {string} itemName - 子菜单项名称 ('goods-list', 'order-list' 等)
 * @returns {boolean} 是否为只读模式
 */
export function isMenuItemReadonly(moduleName, itemName) {
    const userStore = useUserStore()
    const menus = userStore.getVisibleMenus
    return menus[moduleName]?.children?.[itemName]?.readonly || false
}

/**
 * 检查是否为超级管理员
 * @returns {boolean}
 */
export function isSuperAdmin() {
    const userStore = useUserStore()
    return userStore.isSuperAdmin
}

/**
 * 检查是否为商品管理员
 * @returns {boolean}
 */
export function isGoodsAdmin() {
    const userStore = useUserStore()
    return userStore.isGoodsAdmin
}

/**
 * 检查是否为数据分析员
 * @returns {boolean}
 */
export function isDataAnalyst() {
    const userStore = useUserStore()
    return userStore.isDataAnalyst
}

/**
 * 检查用户角色
 * @param {string} role - 要检查的角色 ('1', '2', '3')
 * @returns {boolean}
 */
export function hasRole(role) {
    const userStore = useUserStore()
    return userStore.role === role
}

/**
 * 获取当前用户角色
 * @returns {string} 用户角色
 */
export function getCurrentRole() {
    const userStore = useUserStore()
    return userStore.role
}

/**
 * 获取当前用户信息
 * @returns {object} 用户信息
 */
export function getCurrentUser() {
    const userStore = useUserStore()
    return userStore.user
}

/**
 * 检查用户是否有权访问指定路由
 * @param {string} routeName - 路由名称
 * @returns {boolean} 是否有权限访问
 */
export function canAccessRoute(routeName) {
    const userStore = useUserStore()

    const routePermissions = {
        'dashboard': ['1', '2', '3'],
        'goods-list': ['1', '2'],
        'goods-category': ['1', '2'],
        'product-spec': ['1', '2'],
        'brand-management': ['1', '2'],
        'order-list': ['1', '3'],
        'refund-handle': ['1'],
        'admin-list': ['1'],
        'user-list': ['1'],
    }

    const allowedRoles = routePermissions[routeName] || []
    return allowedRoles.includes(userStore.role)
}

/**
 * 获取指定模块的可访问路由列表
 * @param {string} moduleName - 模块名称 ('goods', 'order', 'permission' 等)
 * @returns {string[]} 可访问的路由名称列表
 */
export function getAccessibleRoutes(moduleName) {
    const userStore = useUserStore()
    const menus = userStore.getVisibleMenus

    if (!menus[moduleName] || !menus[moduleName].visible) {
        return []
    }

    const accessible = []
    const module = menus[moduleName]

    if (module.children) {
        Object.entries(module.children).forEach(([key, value]) => {
            if (value.visible) {
                accessible.push(key)
            }
        })
    }

    return accessible
}

